// 引入axios
import axios from 'axios'
// 引入store
import store from '@/store'

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_URL,
  timeout: 3000
})

// 添加请求拦截器
service.interceptors.request.use(
  (config) => {
    const token = store.state.token
    // console.log(token)
    config.headers.Authorization = token
    // 在发送请求之前做些什么
    // console.log(config)// loading效果  配置token  对post请求时发送的数据进行处理
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
service.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么   请求成功以后对数据需要处理一下和状态码进行判断做出不同的反应
    // console.log(response)

    return response
  },
  function (error) {
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

// 对axios进行封装(地址 参数 请求方式)
function request (url = '', data = {}, method = 'get') {
  let p = null
  const a = new Promise((resolve, reject) => {
    if (method === 'get') {
      p = service.get(url, {
        params: data
      })
    } else if (method === 'post') {
      p = service.post(url, data)
    } else if (method === 'delete') {
      p = service.delete(url, {
        params: data
      })
    } else if (method === 'put') {
      p = service.put(url, data)
    }
    // 成功的回调
    p.then((res) => {
      // console.log(res)
      // 失败的回调
    }).catch((err) => {
      console.log(err)
    })
  })
  console.log(a)
  return p
}

export default request
